/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.entidad;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import pe.com.cotelasa.scp.entidad.Cliente;
import pe.com.cotelasa.scp.entidad.TipoMoneda;

/**
 *
 * @author Jorge
 */
@Entity
@Table(name = "venta_facturacion",catalog = "bdcotelasa", schema = "cotelasa")
@NamedQueries({
    @NamedQuery(name = "VentaFacturacion.findAll", query = "SELECT v FROM VentaFacturacion v"),
    @NamedQuery(name = "VentaFacturacion.findByCoddocventa", query = "SELECT v FROM VentaFacturacion v WHERE v.coddocventa = :coddocventa"),
    @NamedQuery(name = "VentaFacturacion.findByFechDocventa", query = "SELECT v FROM VentaFacturacion v WHERE v.fechDocventa = :fechDocventa"),
    @NamedQuery(name = "VentaFacturacion.findByDomiPartida", query = "SELECT v FROM VentaFacturacion v WHERE v.domiPartida = :domiPartida"),
    @NamedQuery(name = "VentaFacturacion.findByDomiLlegada", query = "SELECT v FROM VentaFacturacion v WHERE v.domiLlegada = :domiLlegada"),
    @NamedQuery(name = "VentaFacturacion.findByDatosDestina", query = "SELECT v FROM VentaFacturacion v WHERE v.datosDestina = :datosDestina"),
    @NamedQuery(name = "VentaFacturacion.findByRuc", query = "SELECT v FROM VentaFacturacion v WHERE v.ruc = :ruc"),
    @NamedQuery(name = "VentaFacturacion.findByNOcliente", query = "SELECT v FROM VentaFacturacion v WHERE v.nOcliente = :nOcliente"),
    @NamedQuery(name = "VentaFacturacion.findByGuiaRem", query = "SELECT v FROM VentaFacturacion v WHERE v.guiaRem = :guiaRem"),
    @NamedQuery(name = "VentaFacturacion.findByMotTraslado", query = "SELECT v FROM VentaFacturacion v WHERE v.motTraslado = :motTraslado"),
    @NamedQuery(name = "VentaFacturacion.findByPrecioVenta", query = "SELECT v FROM VentaFacturacion v WHERE v.precioVenta = :precioVenta"),
    @NamedQuery(name = "VentaFacturacion.findByIgv", query = "SELECT v FROM VentaFacturacion v WHERE v.igv = :igv"),
    @NamedQuery(name = "VentaFacturacion.findByVendedor", query = "SELECT v FROM VentaFacturacion v WHERE v.vendedor = :vendedor"),
    @NamedQuery(name = "VentaFacturacion.findByValorVenta", query = "SELECT v FROM VentaFacturacion v WHERE v.valorVenta = :valorVenta"),
    @NamedQuery(name = "VentaFacturacion.findBySerieFactura", query = "SELECT v FROM VentaFacturacion v WHERE v.serieFactura = :serieFactura"),
    @NamedQuery(name = "VentaFacturacion.findByNumFactura", query = "SELECT v FROM VentaFacturacion v WHERE v.numFactura = :numFactura"),
    @NamedQuery(name = "VentaFacturacion.findByTipoCompago", query = "SELECT v FROM VentaFacturacion v WHERE v.tipoCompago = :tipoCompago"),
    @NamedQuery(name = "VentaFacturacion.findByRazon", query = "SELECT v FROM VentaFacturacion v WHERE v.razon = :razon"),
    @NamedQuery(name = "VentaFacturacion.findByCoddocbase", query = "SELECT v FROM VentaFacturacion v WHERE v.coddocbase = :coddocbase"),
    @NamedQuery(name = "VentaFacturacion.findByDocSustento", query = "SELECT v FROM VentaFacturacion v WHERE v.docSustento = :docSustento"),
    @NamedQuery(name = "VentaFacturacion.findByNota", query = "SELECT v FROM VentaFacturacion v WHERE v.nota = :nota"),
    @NamedQuery(name = "VentaFacturacion.findByFechVencimiento", query = "SELECT v FROM VentaFacturacion v WHERE v.fechVencimiento = :fechVencimiento"),
    @NamedQuery(name = "VentaFacturacion.findByFechEntrega", query = "SELECT v FROM VentaFacturacion v WHERE v.fechEntrega = :fechEntrega"),
    @NamedQuery(name = "VentaFacturacion.findByPorCobrar", query = "SELECT v FROM VentaFacturacion v WHERE v.porCobrar = :porCobrar"),
    @NamedQuery(name = "VentaFacturacion.findByAcuenta", query = "SELECT v FROM VentaFacturacion v WHERE v.acuenta = :acuenta"),
    @NamedQuery(name = "VentaFacturacion.findByDescuento", query = "SELECT v FROM VentaFacturacion v WHERE v.descuento = :descuento"),
    @NamedQuery(name = "VentaFacturacion.findByIgvPorcentaje", query = "SELECT v FROM VentaFacturacion v WHERE v.igvPorcentaje = :igvPorcentaje"),
    @NamedQuery(name = "VentaFacturacion.findByNlicenciaEt", query = "SELECT v FROM VentaFacturacion v WHERE v.nlicenciaEt = :nlicenciaEt"),
    @NamedQuery(name = "VentaFacturacion.findByNcinsEt", query = "SELECT v FROM VentaFacturacion v WHERE v.ncinsEt = :ncinsEt"),
    @NamedQuery(name = "VentaFacturacion.findByMnplacaEt", query = "SELECT v FROM VentaFacturacion v WHERE v.mnplacaEt = :mnplacaEt"),
    @NamedQuery(name = "VentaFacturacion.findByRucEt", query = "SELECT v FROM VentaFacturacion v WHERE v.rucEt = :rucEt"),
    @NamedQuery(name = "VentaFacturacion.findByRazonEt", query = "SELECT v FROM VentaFacturacion v WHERE v.razonEt = :razonEt"),
    @NamedQuery(name = "VentaFacturacion.findByValorLetras", query = "SELECT v FROM VentaFacturacion v WHERE v.valorLetras = :valorLetras"),
    @NamedQuery(name = "VentaFacturacion.findByEstado", query = "SELECT v FROM VentaFacturacion v WHERE v.estado = :estado"),
    @NamedQuery(name = "VentaFacturacion.findByMotBaja", query = "SELECT v FROM VentaFacturacion v WHERE v.motBaja = :motBaja"),
    @NamedQuery(name = "VentaFacturacion.findByDocBaja", query = "SELECT v FROM VentaFacturacion v WHERE v.docBaja = :docBaja"),
    @NamedQuery(name = "VentaFacturacion.findByFechBaja", query = "SELECT v FROM VentaFacturacion v WHERE v.fechBaja = :fechBaja")})
public class VentaFacturacion implements Serializable {
    private static final long serialVersionUID = 1L;
    
    @Id
    @SequenceGenerator(name = "generadorVentaFacturacion", sequenceName = "cotelasa.venta_facturacion_id_seq")
    @GeneratedValue(generator = "generadorVentaFacturacion") 
    @Basic(optional = false)
    @Column(name = "coddocventa")
    private Integer coddocventa;
    @Column(name = "fech_docventa")
    @Temporal(TemporalType.DATE)
    private Date fechDocventa;
    @Column(name = "domi_partida")
    private String domiPartida;
    @Column(name = "domi_llegada")
    private String domiLlegada;
    @Column(name = "datos_destina")
    private String datosDestina;
    @Column(name = "ruc")
    private String ruc;
    @Column(name = "n_ocliente")
    private String nOcliente;
    @Column(name = "guia_rem")
    private String guiaRem;
    @Column(name = "mot_traslado")
    private Integer motTraslado;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "precio_venta")
    private Double precioVenta;
    @Column(name = "igv")
    private Double igv;
    @Column(name = "vendedor")
    private Integer vendedor;
    @Column(name = "valor_venta")
    private Double valorVenta;
    @Column(name = "serie_factura")
    private String serieFactura;
    @Column(name = "num_factura")
    private String numFactura;
    @Column(name = "tipo_compago")
    private Integer tipoCompago;
    @Column(name = "razon")
    private String razon;
    @Column(name = "coddocbase")
    private Integer coddocbase;
    @Column(name = "tipo_cambio")
    private Double tipoCambio;
    @Column(name = "doc_sustento")
    private String docSustento;
    @Column(name = "nota")
    private String nota;
    @Column(name = "fech_vencimiento")
    @Temporal(TemporalType.DATE)
    private Date fechVencimiento;
    @Column(name = "fech_entrega")
    @Temporal(TemporalType.DATE)
    private Date fechEntrega;
    @Column(name = "por_cobrar")
    private Double porCobrar;
    @Column(name = "acuenta")
    private Double acuenta;
    @Column(name = "descuento")
    private Double descuento;
    @Column(name = "igv_porcentaje")
    private Double igvPorcentaje;
    @Column(name = "nlicencia_et")
    private String nlicenciaEt;
    @Column(name = "ncins_et")
    private String ncinsEt;
    @Column(name = "mnplaca_et")
    private String mnplacaEt;
    @Column(name = "ruc_et")
    private String rucEt;
    @Column(name = "razon_et")
    private String razonEt;
    @Column(name = "valor_letras")
    private String valorLetras;
    @Column(name = "estado")
    private Character estado;
    
    @Basic(optional = false)
    @Column(name = "usr_creacion")
    private String usrCreacion;
    
    @Basic(optional = false)
    @Column(name = "fec_creacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecCreacion;
    
    @Column(name = "usr_modificacion")
    private String usrModificacion;
    
    @Column(name = "fec_modificacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecModificacion;
    
    @Basic(optional = false)
    @Column(name = "estado_registro")
    private char estadoRegistro; 
    
    @Column(name = "mot_baja")
    private String motBaja;
    @Column(name = "doc_baja")
    private String docBaja;
    @Column(name = "fech_baja")
    @Temporal(TemporalType.DATE)
    private Date fechBaja;
    
    
    
    @JoinColumn(name = "moneda", referencedColumnName = "id")
    @ManyToOne(fetch=FetchType.LAZY)
    private TipoMoneda moneda;
    @JoinColumn(name = "forma_pago", referencedColumnName = "id")
    @ManyToOne(fetch=FetchType.LAZY)
    private TipoFormaPago formaPago;
    @JoinColumn(name = "cod_cliente", referencedColumnName = "id")
    @ManyToOne(fetch=FetchType.LAZY)
    private Cliente codCliente;
    
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "id_sede")
    private Sede sede;
    
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "id_orden_pedido")
    private OrdenPedido ordenPedido;
    
    @Column(name = "direccion")
    private String direccion;
    @Column(name = "direccion_alt")
    private String direccionAlt;
    @Column(name = "marca_et")
    private String marcaEt;
    @Column(name = "costo_minimo")
    private Double costoMinimo;
    @Column(name = "tipo_documento")
    private Integer tipoDocumento;
    
    @Column(name = "tipo_pago")
    private String tipoPago;
    
    @Column(name = "aplicar_drawback")
    private short aplicarDrawback;
    
    @Column(name = "total_exportacion")
    private Double totalExportacion;
    
    @Column(name = "valor_cfr")
    private Double valorCFR;
    
    @Column(name = "valor_cif")
    private Double valorCIF;
    
    @Column(name = "num_bultos")
    private String numBultos;
    
    @Column(name = "puerto_origen")
    private String puertoOrigen;
    
    @Column(name = "embarcado")
    private String embarcado;
    
    @Column(name = "puerto_destino")
    private String puertoDestino;
    
    @Column(name = "fech_embarque")
    @Temporal(TemporalType.DATE)
    private Date fechEmbarque;
    
    @Column(name = "fech_llegada")
    @Temporal(TemporalType.DATE)
    private Date fechLlegada;
    
    
    @Column(name = "fec_cancelacion")
    @Temporal(TemporalType.DATE)
    private Date fecCancelacion;
    
    
    
    

    public VentaFacturacion() {
    	codCliente = new Cliente();
    	moneda = new TipoMoneda();
    }

    
    public VentaFacturacion(Integer coddocventa) {
        this.coddocventa = coddocventa;
    }

    public Integer getCoddocventa() {
        return coddocventa;
    }

    public void setCoddocventa(Integer coddocventa) {
        this.coddocventa = coddocventa;
    }

    public Date getFechDocventa() {
        return fechDocventa;
    }

    public void setFechDocventa(Date fechDocventa) {
        this.fechDocventa = fechDocventa;
    }

    public String getDomiPartida() {
        return domiPartida;
    }

    public void setDomiPartida(String domiPartida) {
        this.domiPartida = domiPartida;
    }

    public String getDomiLlegada() {
        return domiLlegada;
    }

    public void setDomiLlegada(String domiLlegada) {
        this.domiLlegada = domiLlegada;
    }

    public String getDatosDestina() {
        return datosDestina;
    }

    public void setDatosDestina(String datosDestina) {
        this.datosDestina = datosDestina;
    }

    public String getRuc() {
        return ruc;
    }

    public void setRuc(String ruc) {
        this.ruc = ruc;
    }

    public String getNOcliente() {
        return nOcliente;
    }

    public void setNOcliente(String nOcliente) {
        this.nOcliente = nOcliente;
    }

    public String getGuiaRem() {
        return guiaRem;
    }

    public void setGuiaRem(String guiaRem) {
        this.guiaRem = guiaRem;
    }

    public Integer getMotTraslado() {
        return motTraslado;
    }

    public void setMotTraslado(Integer motTraslado) {
        this.motTraslado = motTraslado;
    }

    public Double getPrecioVenta() {
        return precioVenta;
    }

    public void setPrecioVenta(Double precioVenta) {
        this.precioVenta = precioVenta;
    }

    public Double getIgv() {
        return igv;
    }

    public void setIgv(Double igv) {
        this.igv = igv;
    }

    public Integer getVendedor() {
        return vendedor;
    }

    public void setVendedor(Integer vendedor) {
        this.vendedor = vendedor;
    }

    public Double getValorVenta() {
        return valorVenta;
    }

    public void setValorVenta(Double valorVenta) {
        this.valorVenta = valorVenta;
    }

    public String getSerieFactura() {
        return serieFactura;
    }

    public void setSerieFactura(String serieFactura) {
        this.serieFactura = serieFactura;
    }

    public String getNumFactura() {
        return numFactura;
    }

    public void setNumFactura(String numFactura) {
        this.numFactura = numFactura;
    }

    public String getnOcliente() {
        return nOcliente;
    }

    public void setnOcliente(String nOcliente) {
        this.nOcliente = nOcliente;
    }

    public Integer getTipoCompago() {
        return tipoCompago;
    }

    public void setTipoCompago(Integer tipoCompago) {
        this.tipoCompago = tipoCompago;
    }

    public Double getTipoCambio() {
        return tipoCambio;
    }

    public void setTipoCambio(Double tipoCambio) {
        this.tipoCambio = tipoCambio;
    }

   
    
   public String getRazon() {
        return razon;
    }

    public void setRazon(String razon) {
        this.razon = razon;
    }

    public Integer getCoddocbase() {
        return coddocbase;
    }

    public void setCoddocbase(Integer coddocbase) {
        this.coddocbase = coddocbase;
    }

   

    public String getDocSustento() {
        return docSustento;
    }

    public void setDocSustento(String docSustento) {
        this.docSustento = docSustento;
    }

    public String getNota() {
        return nota;
    }

    public void setNota(String nota) {
        this.nota = nota;
    }

    public Date getFechVencimiento() {
        return fechVencimiento;
    }

    public void setFechVencimiento(Date fechVencimiento) {
        this.fechVencimiento = fechVencimiento;
    }

    public Date getFechEntrega() {
        return fechEntrega;
    }

    public void setFechEntrega(Date fechEntrega) {
        this.fechEntrega = fechEntrega;
    }

    public Double getPorCobrar() {
        return porCobrar;
    }

    public void setPorCobrar(Double porCobrar) {
        this.porCobrar = porCobrar;
    }

    public Double getAcuenta() {
        return acuenta;
    }

    public void setAcuenta(Double acuenta) {
        this.acuenta = acuenta;
    }

    public Double getDescuento() {
        return descuento;
    }

    public void setDescuento(Double descuento) {
        this.descuento = descuento;
    }

    public Double getIgvPorcentaje() {
        return igvPorcentaje;
    }

    public void setIgvPorcentaje(Double igvPorcentaje) {
        this.igvPorcentaje = igvPorcentaje;
    }

    public String getNlicenciaEt() {
        return nlicenciaEt;
    }

    public void setNlicenciaEt(String nlicenciaEt) {
        this.nlicenciaEt = nlicenciaEt;
    }

    public String getNcinsEt() {
        return ncinsEt;
    }

    public void setNcinsEt(String ncinsEt) {
        this.ncinsEt = ncinsEt;
    }

    public String getMnplacaEt() {
        return mnplacaEt;
    }

    public void setMnplacaEt(String mnplacaEt) {
        this.mnplacaEt = mnplacaEt;
    }

    public String getRucEt() {
        return rucEt;
    }

    public void setRucEt(String rucEt) {
        this.rucEt = rucEt;
    }

    public String getRazonEt() {
        return razonEt;
    }

    public void setRazonEt(String razonEt) {
        this.razonEt = razonEt;
    }

    public String getValorLetras() {
        return valorLetras;
    }

    public void setValorLetras(String valorLetras) {
        this.valorLetras = valorLetras;
    }

    public Character getEstado() {
        return estado;
    }

    public void setEstado(Character estado) {
        this.estado = estado;
    }

    public String getMotBaja() {
        return motBaja;
    }

    public void setMotBaja(String motBaja) {
        this.motBaja = motBaja;
    }

    public String getDocBaja() {
        return docBaja;
    }

    public void setDocBaja(String docBaja) {
        this.docBaja = docBaja;
    }

    public Date getFechBaja() {
        return fechBaja;
    }

    public void setFechBaja(Date fechBaja) {
        this.fechBaja = fechBaja;
    }

    public TipoMoneda getMoneda() {
        return moneda;
    }

    public void setMoneda(TipoMoneda moneda) {
        this.moneda = moneda;
    }

    public TipoFormaPago getFormaPago() {
        return formaPago;
    }

    public void setFormaPago(TipoFormaPago formaPago) {
        this.formaPago = formaPago;
    }

    public Cliente getCodCliente() {
        return codCliente;
    }

    public void setCodCliente(Cliente codCliente) {
        this.codCliente = codCliente;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getDireccionAlt() {
        return direccionAlt;
    }

    public void setDireccionAlt(String direccionAlt) {
        this.direccionAlt = direccionAlt;
    }

    public String getMarcaEt() {
        return marcaEt;
    }

    public void setMarcaEt(String marcaEt) {
        this.marcaEt = marcaEt;
    }

    public Double getCostoMinimo() {
        return costoMinimo;
    }

    public void setCostoMinimo(Double costoMinimo) {
        this.costoMinimo = costoMinimo;
    }

    public Integer getTipoDocumento() {
        return tipoDocumento;
    }

    public void setTipoDocumento(Integer tipoDocumento) {
        this.tipoDocumento = tipoDocumento;
    }

    
    
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (coddocventa != null ? coddocventa.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof VentaFacturacion)) {
            return false;
        }
        VentaFacturacion other = (VentaFacturacion) object;
        if ((this.coddocventa == null && other.coddocventa != null) || (this.coddocventa != null && !this.coddocventa.equals(other.coddocventa))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "pruebas.VentaFacturacion[ coddocventa=" + coddocventa + " ]";
    }

    public String getUsrCreacion() {
        return usrCreacion;
    }

    public void setUsrCreacion(String usrCreacion) {
        this.usrCreacion = usrCreacion;
    }

    public Date getFecCreacion() {
        return fecCreacion;
    }

    public void setFecCreacion(Date fecCreacion) {
        this.fecCreacion = fecCreacion;
    }

    public String getUsrModificacion() {
        return usrModificacion;
    }

    public void setUsrModificacion(String usrModificacion) {
        this.usrModificacion = usrModificacion;
    }

    public Date getFecModificacion() {
        return fecModificacion;
    }

    public void setFecModificacion(Date fecModificacion) {
        this.fecModificacion = fecModificacion;
    }

    public char getEstadoRegistro() {
        return estadoRegistro;
    }

    public void setEstadoRegistro(char estadoRegistro) {
        this.estadoRegistro = estadoRegistro;
    }

    public Sede getSede() {
        return sede;
    }

    public void setSede(Sede sede) {
        this.sede = sede;
    }

    public OrdenPedido getOrdenPedido() {
        return ordenPedido;
    }

    public void setOrdenPedido(OrdenPedido ordenPedido) {
        this.ordenPedido = ordenPedido;
    }

    public String getTipoPago() {
        return tipoPago;
    }

    public void setTipoPago(String tipoPago) {
        this.tipoPago = tipoPago;
    }

    public short getAplicarDrawback() {
        return aplicarDrawback;
    }

    public void setAplicarDrawback(short aplicarDrawback) {
        this.aplicarDrawback = aplicarDrawback;
    }

    public Double getValorCFR() {
        return valorCFR;
    }

    public void setValorCFR(Double valorCFR) {
        this.valorCFR = valorCFR;
    }

    public Double getValorCIF() {
        return valorCIF;
    }

    public void setValorCIF(Double valorCIF) {
        this.valorCIF = valorCIF;
    }

    public String getNumBultos() {
        return numBultos;
    }

    public void setNumBultos(String numBultos) {
        this.numBultos = numBultos;
    }

    public String getPuertoOrigen() {
        return puertoOrigen;
    }

    public void setPuertoOrigen(String puertoOrigen) {
        this.puertoOrigen = puertoOrigen;
    }

    public String getEmbarcado() {
        return embarcado;
    }

    public void setEmbarcado(String embarcado) {
        this.embarcado = embarcado;
    }

    public String getPuertoDestino() {
        return puertoDestino;
    }

    public void setPuertoDestino(String puertoDestino) {
        this.puertoDestino = puertoDestino;
    }

    public Date getFechEmbarque() {
        return fechEmbarque;
    }

    public void setFechEmbarque(Date fechEmbarque) {
        this.fechEmbarque = fechEmbarque;
    }

    public Date getFechLlegada() {
        return fechLlegada;
    }

    public void setFechLlegada(Date fechLlegada) {
        this.fechLlegada = fechLlegada;
    }

    public Double getTotalExportacion() {
        return totalExportacion;
    }

    public void setTotalExportacion(Double totalExportacion) {
        this.totalExportacion = totalExportacion;
    }

    public Date getFecCancelacion() {
        return fecCancelacion;
    }

    public void setFecCancelacion(Date fecCancelacion) {
        this.fecCancelacion = fecCancelacion;
    }
    
}
